package com.un.ebs.sys.service;

import com.un.ebs.sys.base.QueueTaskListener;

import java.util.concurrent.TimeUnit;

public interface DelayedQueueService {
    /**
     * 发送消息至 Queue (擴展用)
     *
     * @param t        任務DTO
     * @param delay    出棧延遲時間
     * @param timeUnit 延遲時間單位
     * @return
     */
    <T> void sendQueue(T t, long delay, TimeUnit timeUnit);

    /**
     * 綁定Queue和消費者 (擴展用)
     *
     * @param zClass   任務DTO
     * @param listener 消費者
     * @return
     */
    <T> void setQueue(Class zClass, QueueTaskListener listener);

    void listenQueue() throws InterruptedException;

}
